﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;

namespace QLBH
{
    public partial class Khachhang : UserControl
    {
        IKh List_Kh = new Tes1();
        CKhachhang kh;
        public Khachhang()
        {
            InitializeComponent();
            load_Info();
        }
        #region hàm làm mới
        private void refesh()
        {
            cMaKH.Text = "";
            cTenKH.Text = "";
            tDiaChi.Text = "";
            dNdk.Value = DateTime.Now;
            dNs.Value = DateTime.Now;
            tSdt.Text = "";
        }
        #endregion
        #region hàm kiểm tra
        private bool kiemtra()
        {
            if (cMaKH.Text == "" || cTenKH.Text == "" || tDiaChi.Text == "" || tSdt.Text == "")
                return false;
            return true;
        }
        #endregion
        #region hàm load thông tin
        private void load_Info()
        {
            List_Kh.Load("KhachHang.a");
            //
            load_Grid();
        }
        private void load_Grid()
        {
            if (List_Kh != null)
            {
                DataTable tb = new DataTable("Khách hàng");
                DataColumn colCod = new DataColumn("Mã KH");
                DataColumn colName = new DataColumn("Tên KH");
                DataColumn colAnd = new DataColumn("Địa Chỉ");
                DataColumn colBirt = new DataColumn("Ngày Sinh");
                DataColumn colreg = new DataColumn("Ngày DK");
                DataColumn colNP = new DataColumn("Số DT");
                DataColumn colTo = new DataColumn("Doanh Số");
                tb.Columns.Add(colCod);
                tb.Columns.Add(colName);
                tb.Columns.Add(colAnd);
                tb.Columns.Add(colBirt);
                tb.Columns.Add(colreg);
                tb.Columns.Add(colNP);
                tb.Columns.Add(colTo);

                foreach (CKhachhang kh in List_Kh)
                {
                    DataRow row = tb.NewRow();
                    row["Mã KH"] = kh.Makh;
                    row["Tên KH"] = kh.Tenkh;
                    row["Địa Chỉ"] = kh.Diachikh;
                    row["Ngày Sinh"] = kh.Ngaysinh.ToString().Substring(0, 10);
                    row["Ngày DK"] = kh.Ngaydk.ToString().Substring(0, 10);
                    row["Số DT"] = kh.Sodt;
                    row["Doanh Số"] = kh.Doanhso;
                    //
                    tb.Rows.Add(row);

                }
                dataGridView_KQ.DataSource = tb;
            }
        }
        #endregion
        #region thêm
        private void ThemKh()
        {
            kh = new CKhachhang();
            kh.Makh = cMaKH.Text;
            kh.Tenkh = cTenKH.Text;
            kh.Diachikh = tDiaChi.Text;
            kh.Ngaydk = dNdk.Value.Date;
            kh.Ngaysinh = dNs.Value.Date;
            kh.Sodt = tSdt.Text;
            kh.Doanhso = 0;

            List_Kh.Add(kh);
            List_Kh.Save("KhachHang.a");
        }
        #endregion
        #region xóa
        private void xoaKh()
        {
            int i;

            if (cMaKH.Text == "")
            {
                MessageBox.Show("Nhập mã số khách hàng cần xóa!", "Thông Báo");
            }
            else if (cMaKH.Text != "")
            {
                for (i = 0; i < List_Kh.Count; i++)
                {
                    if (List_Kh[i].Makh == cMaKH.Text)
                    {
                        //xóa hóa đơn
                        XoaHd(cMaKH.Text);
                        //xóa kh
                        List_Kh.RemoveAt(i);
                        List_Kh.Save("KhachHang.a");
                        refesh();
                        this.load_Grid();
                        MessageBox.Show("Đã xóa thành công!", "Thông Báo");
                        return;
                    }
                }
                MessageBox.Show("Không tìm thấy khách hàng cần xóa!", "Thông Báo");
            }
            
        }
        #endregion
        #region sửa
        private int suaKh()
        {
            int i;

            if (cMaKH.Text == "")
            {
                MessageBox.Show("Chọn khách hàng cần sửa!", "Thông Báo");
            }
            else
            {
                for (i = 0; i < List_Kh.Count; i++)
                {
                    if (List_Kh[i].Makh == cMaKH.Text)
                    {
                        return i;
                    }
                }
                MessageBox.Show("Không tìm thấy khách hàng cần sửa!", "Thông Báo");
            }
            return -1;
        }
        #endregion
        #region sự kiện button click
        private void bThem_Click(object sender, EventArgs e)
        {
            if (kiemtra() == false)
            {
                MessageBox.Show("Bạn chưa nhập đủ thông tin!", "Thông Báo");
            }
            else
            {
                if (Test())
                {
                    ThemKh();
                    this.load_Grid();
                    MessageBox.Show("Thêm khách hàng thành công!");
                }
            }

        }

        private void bXoa_Click(object sender, EventArgs e)
        {
            xoaKh();
        }

        private void bSua_Click(object sender, EventArgs e)
        {
            if (suaKh() != -1)
            {
                int i = suaKh();
                //update info
                List_Kh[i].Tenkh = cTenKH.Text;
                List_Kh[i].Diachikh = tDiaChi.Text;
                List_Kh[i].Ngaysinh = dNs.Value.Date;
                List_Kh[i].Ngaydk = dNdk.Value.Date;
                List_Kh[i].Sodt = tSdt.Text;
                refesh();
                List_Kh.Save("KhachHang.a");
                //
                this.load_Grid();
                MessageBox.Show("Đã sửa thông tin thành công!", "Thông Báo");
            }
        }

        private void bLM_Click(object sender, EventArgs e)
        {
            refesh();
        }

        private void tSdt_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void dataGridView_KQ_Click(object sender, EventArgs e)
        {
            if (dataGridView_KQ.SelectedRows.Count > 0)
            {
                DataGridViewRow row = dataGridView_KQ.SelectedRows[0];
                int vtHang = dataGridView_KQ.Rows.IndexOf(row);
                cMaKH.Text = dataGridView_KQ[0, vtHang].Value.ToString();
                cTenKH.Text = dataGridView_KQ[1, vtHang].Value.ToString();
                tDiaChi.Text = dataGridView_KQ[2, vtHang].Value.ToString();
                dNs.Text = dataGridView_KQ[3, vtHang].Value.ToString();
                dNdk.Text = dataGridView_KQ[4, vtHang].Value.ToString();
                tSdt.Text = dataGridView_KQ[5, vtHang].Value.ToString();
            }
        }
        #endregion
        #region Kiểm tra mã KH hợp lệ
        private bool Test()
        {
            foreach (CKhachhang kh in List_Kh)
            {
                if (cMaKH.Text == kh.Makh)
                {
                    MessageBox.Show("Đã tồn tại mã khách hàng này!", "Thông Báo", MessageBoxButtons.OK);
                    cMaKH.Text = "";
                    return false;
                }
            }
            return true;
        }
        #endregion
        #region xóa hóa đơn của khách hàng
        private void XoaHd(string Mkh)
        {
            IQcollections List_HD = new ICollection();
            List_HD.Load("HoaDon.a");
            for (int i = 0; i < List_HD.Count; i++ )
            {
                if (List_HD[i].MaKH == Mkh)
                {
                    //xóa CTHD
                    XoaCT(List_HD[i].SoHD);
                    //xóa hóa đơn
                    List_HD.RemoveAt(i);
                    --i;
                    //MessageBox.Show("Đã xóa hd thành công!", "Thông Báo");
                }
            }
            List_HD.Save("HoaDon.a");
        }
        #endregion
        #region  xóa chi tiết hóa đơn
        private void XoaCT(int SHD)
        {
            ICT List_Ct = new DCT();
            List_Ct.Load("CTHD.a");
            for (int i = 0; i < List_Ct.Count; i++)
            {
                if (List_Ct[i].SoHD == SHD)
                {
                    List_Ct.RemoveAt(i);
                    --i;
                    //MessageBox.Show("Đã xóa hd thành công!", "Thông Báo");
                }
            }
            List_Ct.Save("CTHD.a");
        }
        #endregion
    }
}
